home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / program / amcfp140.lha / AMCAF_Examples / ShowAGAPic.AMOS / ShowAGAPic.amosSourceCode
AMOS Source Code  |  1996-01-19  |  4KB  |  138 lines

  1. ' ************************************* Commands used: 
  2. ' *                                   * =Aga Detect
  3. ' *           Amcaf Examples          * Imploder Load  
  4. ' *          ShowAGAPic V1.0          *  
  5. ' *      Written by Chris Hodges      *  
  6. ' *                                   *  
  7. ' *************************************  
  8. '
  9. ' Some procedures to display lores/hires (interlaced) 256 colour 
  10. ' graphics. Use the Iff2Raw program to convert the iff pictures
  11. ' into the format the program needs. 
  12. '
  13. If Extension_8_1712 =0 Then Print "You don't have AGA! Sorry guy!" : Stop 
  14. SHOAGAPIC["data/MyBootLogo",640,512,$8004]
  15. End 
  16. Procedure SHOAGAPIC[FIL$,WX,WY,MDE]
  17.    Extension_8_0EA2 FIL$+".raw",-8
  18.    Extension_8_0EA2 FIL$+".col",10
  19.   Reserve As Chip Work 9,1024+32
  20.   DY=$28 : DX=$80
  21.   BITMAP=Start(8)
  22.   BSIZE=(WX/8)*WY
  23.   CMAP=Start(9)
  24.   Copper Off 
  25.   Cop Reset 
  26.   Cop Move $100,$200
  27.   Cop Wait $FE,$FF
  28.   Cop Swap 
  29.   Cop Reset 
  30.   If MDE and $4
  31.     Cop Movel $108, Extension_8_0946(WX/8)+WX/8 : Rem    BPL1MOD BPL2MOD 
  32.   Else 
  33.     Cop Movel $108,0
  34.   End If 
  35.   Cop Movel $102,0 : Rem    BPLCON1 BPLCON2   
  36.   Cop Move $8E,DX+1+DY*$100 : Rem  DIWSTRT   
  37.   If MDE and $8000
  38.     If MDE and 4
  39.       Cop Move $90,((DX+WX/2+1) and $FF)+((DY+WY/2) and $FF)*$100 : Rem  DIWSTOP 
  40.     Else 
  41.       Cop Move $90,((DX+WX/2+1) and $FF)+((DY+WY) and $FF)*$100 : Rem  DIWSTOP 
  42.     End If 
  43.   Else 
  44.     If MDE and 4
  45.       Cop Move $90,((DX+WX+1) and $FF)+((DY+WY/2) and $FF)*$100 : Rem  DIWSTOP 
  46.     Else 
  47.       Cop Move $90,((DX+WX+1) and $FF)+((DY+WY) and $FF)*$100 : Rem  DIWSTOP 
  48.     End If 
  49.   End If 
  50.   Cop Move $92,$38 : Rem    DDFSTRT 
  51.   Cop Move $94,$D0 : Rem    DFFSTOP 
  52.   For A=0 To 7
  53.     Cop Movel $120+A*4,Start(9)+1024
  54.   Next 
  55.   ' High-Colour Bits 
  56.   CMAPADR= Extension_8_11E0 
  57.   For A=0 To 7
  58.     Cop Move $106,A*$2000
  59.     For B=0 To 31
  60.       Cop Move $180+B*2,0 : RemRrggbb To Rgb(Leek(CMAP+B*4+A*128)) 
  61.     Next 
  62.   Next 
  63.   ' Low-Colour Bits.     
  64.   For A=0 To 7
  65.     Cop Move $106,A*$2000+$200
  66.     For B=0 To 31
  67.       Cop Move $180+B*2,0 : RemRrggbb To Rgb((Leek(CMAP+B*4+A*128) and $F0F0F)*16) 
  68.     Next 
  69.   Next 
  70.   Cop Move $106,0
  71.   ' Bitplanepointer
  72.   BPP= Extension_8_11E0 
  73.   For A=0 To 7
  74.     Cop Movel $E0+A*4,BITMAP+BSIZE*A
  75.   Next 
  76.   ' FMODE! 
  77.   If MDE and $8000
  78.     Cop Move $1FC,1
  79.   Else 
  80.     Cop Move $1FC,0
  81.   End If 
  82.   ' Turn Screen on.
  83.   Cop Move $100,$210+(MDE and $8804)
  84. '  Cop Move $100,$C204 
  85.   ' DMA on.
  86.   Cop Move $96,$8180 : Rem  DMACON  
  87.   Cop Swap 
  88.   Break Off 
  89.   STE=0 : TIMOUT=0
  90.   Repeat 
  91.     If STE<255
  92.       AGAFADECMAP2[CMAP,Start(10)]
  93.       Inc STE
  94.       WRITEAGACMAP[CMAP,CMAPADR]
  95.     Else 
  96.       Inc TIMOUT
  97.     End If 
  98.     AD=BPP+2
  99.     Wait Vbl 
  100.     If MDE and $4
  101.        Extension_8_0346 50
  102.       LACE=(Deek($DFF004) and $8000)<>0
  103.       For A=0 To 7
  104.         Doke AD, Extension_8_0946(BITMAP+BSIZE*A-(WX/8)*LACE) : Add AD,4
  105.         Doke AD,BITMAP+BSIZE*A-(WX/8)*LACE : Add AD,4
  106.       Next 
  107.     End If 
  108.     MK=Mouse Key
  109.   Until MK or TIMOUT>600
  110.   For AA=0 To STE
  111.     AGAFADECMAP[CMAP]
  112.     WRITEAGACMAP[CMAP,CMAPADR]
  113.     AD=BPP+2
  114.     Wait Vbl 
  115.     If MDE and $4
  116.        Extension_8_0346 50
  117.       LACE=(Deek($DFF004) and $8000)<>0
  118.       For A=0 To 7
  119.         Doke AD, Extension_8_0946(BITMAP+BSIZE*A-(WX/8)*LACE) : Add AD,4
  120.         Doke AD,BITMAP+BSIZE*A-(WX/8)*LACE : Add AD,4
  121.       Next 
  122.     End If 
  123.   Next 
  124.   Copper On 
  125.   Break On 
  126.   Sprite Off : Hide On 
  127.   For A=0 To 4 : Doke $DFF1FC,0 : Wait Vbl : View : Next 
  128.   Erase 8 : Erase 9 : Erase 10 : Sprite Off 
  129. End Proc
  130. Procedure AGAFADECMAP2[CMPADR,TARGET]
  131.    ' COMPILED PROCEDURE -- can't convert this to AMOS code
  132. End Proc
  133. Procedure AGAFADECMAP[CMPADR]
  134.    ' COMPILED PROCEDURE -- can't convert this to AMOS code
  135. End Proc
  136. Procedure WRITEAGACMAP[CMPADR,COPADR]
  137.    ' COMPILED PROCEDURE -- can't convert this to AMOS code
  138. End Proc